cookie-parser
✒️ 2025-05-26 14:17 내용 수정
Node.js 교과서 개정 3판 내용 정리
- 요청에 동봉된 쿠키를 해석해 req.cookie 객체를 만든다.
- 참고 자료 : Inpa dev's Express bodyParser / cookieParser 미들웨어 사용법 정리
- cookie에 대한 설명은 Java로 쿠키 생성하기 참고.
- cookie-parser를 사용하려면 VSC 터미널에서 먼저 다운 받아야 한다.
npm i cookie-parser
- server.js에서 cookie 설정을 작성한다.
| 옵션 | 설명 |
|---|---|
| expires | 쿠키의 만료 기한을 날짜로 설정. 만료기한이 지나면 쿠키는 제거되며, 기본은 클라이언트 종료때까지. |
| path | 쿠키 경로 설정, 기본값은 "/" |
| maxAge | expire와 비슷하게 쿠키의 만료 기한을 초 단위로 설정 |
| domain | 쿠키가 전송될 도메인을 특정할 수 있음. 기본값은 '/' |
| httpOnly | true로 설정 시 클라이언트에서 쿠키에 접근 불가 |
| secure | true로 설정 시 Https일 때만 쿠키 전송 |
| signed | true로 설정 시 cookie 뒤에 서명 추가 |
const cookieParser = require('cookie-parser');
// 서명된 쿠키의 경우 비밀키로 서버에서 만들어진 쿠키임을 검증가능
// 서명 비밀 키는 process.env.COOKIE_SECRET 사용
app.use(cookieParser(process.env.COOKIE_SECRET));
// 쿠키 생성하기
res.cookie('cookieName', 'cookieValue', { // 쿠키명, 쿠키값, 옵션을 파라미터로 전달
expires : new Date(Date.now() + 10), // 만료 기한 설정
httpOnly : true, // 웹 서버에서만 쿠키 접근 허용 설정
secure : true, // https에서만 쿠키 사용 허용
signed : true
});
// 쿠키 제거하기
// 쿠키 제거 시엔 expires나 maxAge를 제외한 나머지 옵션이 정확히 일치해야 함
res.clearCookie('cookieName', 'cookieValue', {
httpOnly: true,
secure: true,
signed : true
})
express-session사용 시에도 쿠키를 설정할 때 위와 같은 방법으로 설정한다.- express-session 참고.
서버에서 쿠키 확인
cookie-parser미들웨어를 사용하면 서버에서 클라이언트로부터 온 쿠키를 확인할 수 있다.- 만약 제대로 안 넘어온다면 미들웨어를 확인하거나 CORS의 credential 관련 설정을 서버와 클라이언트에 모두 적용되어 있는지 확인한다.
- CORS(Cross-Origin Resource Sharing) 참고.
// 일반 쿠키
let cookie = req.cookies;
console.log(cookie);
// 서명된 쿠키
let signedCookie = req.signedCookies;
console.log(signedCookie);